1 using System;
2 using
System.Collections.Generic;
3 using
System.ComponentModel;
4 using
System.Drawing;
5 using
System.Data;
6 using
System.Linq;
7 using
System.Text;
8 using
System.Threading.Tasks;
9 using
System.Windows.Forms;
10
11 using
WMPLib;
12 using
System.Drawing.Printing;
13 using
System.Drawing.Drawing2D;
14 using
System.Management;
15 using
System.Xml;
16 using
System.IO;
17
18 namespace
SoftQuanLyNhaHang.Views
19 {
20     
public partial class uctBanHang : UserControl
21     {
22         
public uctBanHang()
23         {
24             InitializeComponent();
25
26             
//this.ActiveControl = txtMaSanPham;
27             
28         }
29
30         
//khởi tạo gọi trong menuscript
31         
public static uctBanHang uctBH = new uctBanHang();
32
33         
//gioi han textchange chi load khi click voa thay doi gia tri
34         
bool loadlandau = true;
35
36         
bool _getTrangThaiThanhToan = false;
37
38         
//int flag = 0;
39         
int _idKhachHang = 0;
40         
//string _tenKhachHang = "";
41         
//string _soDienThoai = "";
42         
//string _diaChi = "";
43         
int _trangThai = 0;
44         
//double _diemTichLuy = 0;
45
46         
//double _tongTien = 0;
47         
//double _tienKhach = 0;
48        
// double _tienTraLai = 0;
49
50         DateTime _ngayMuaHang = DateTime.Now;
51         
//string _tongTienThanhToan = "0";
52         
int _getIdKho = 0;
53         
float _getsoLuongTonKho = 0;
54         
55         
//string chietKhauPhanTram = "0";
56         
//string chietKhauText = "0";
57         
//string thueSuat = "0";
58         
//string tongThanhToan = "0";
59         
//string tienKhach = "0";
60         
//string traLai = "0";
61
62         
double tongtienthanhtoan = 0;
63         
double thueGTGT = 0;
64         
//double ckphantram = 0;
65         
//double cktien = 0;
66         
double tienHang = 0;
67         
double chietKhau = 0;
68
69         DataTable dt =
new DataTable();
70         DataTable dtKho =
new DataTable();
71         
//int idKh = 0;
72         DataTable dtKhTruoc =
new DataTable();
73
74         
int _idBanHang = 0;
75
76         
string _maSanPham = "";
77         
string _tenSanPham = "";
78         
double _giaBan = 0;
79         
double _thanhTien = 0;
80         
float _soLuong_NhapKho = 0;
81         
float _soLuong_DaBan = 0;
82         
string _donViTinh = "";
83         
int _donViTinhId = 0;
84         
//int _maKhachHangId = 0;
85         
//int _nhapKhoId = 0;
86         
double sum = 0;
87         
//double d = 0;
88         
string value = string.Empty;
89         
//double thanhTien = 0;
90         
//string _ghiChu = "";
91         
string _TrangThaiGiaoDich = string.Empty;
92
93         
double _chietKhauPhanTram = 0, _thue = 0;
94
95         
//string diemTichLuy_str = "0";
96         
int _stt = 0;
97        
// int _tongSoBanGhi = 0;
98
99         
double tongtienthanhtoan_co_thueCk = 0;
100         
double tongtienhang_khong_thuevack = 0;
101
102         
//Declaration the global variables
103
104         
//--https://www.codeproject.com/Tips/733680/Printing-and-Previewing-multiple-pages-in-Csharp
105         PaperSize paperSize =
new PaperSize("papersize", 800, 900);//set the paper size
106         
int totalnumber = 0;//this is for total number of items of the list or array
107         
int itemperpage = 0;//this is for no of item per page
108
109         DataTable dtBomItem =
new DataTable();
110
111         
int _pageIndexKhTruoc = 1;
112         
int _tongSoBanGhiKhTruoc = 0;
113         
int _idKhBack = 0;
114
115         
string _KeyBanQuyen = "";
116         
string _KeyDungThu = "";
117         
//string _KeyNgaySuDung = "";
118         
string _SerialNumberKey_GetHDD = "";
119         
string _SerialNumberKey_GetXML_File = "";
120         
//string _KeyDungThu_GetXML_File = "";
121         
//string _ValidateSerial = "";
122         
bool kt = false;
123
124
125         
//Timer t = new Timer();
126
127         
private void HienThiKhach_ComboBox()
128         {
129             Dictionary<
string, string> comboSource = new Dictionary<string, string>();
130             comboSource.Add(
"MuaHang", "Mua hàng");
131             comboSource.Add(
"DatHang", "Đặt hàng");
132             comboSource.Add(
"TraHang", "Trả hàng");
133
134             cmbTTKh.DataSource =
new BindingSource(comboSource, null);
135             cmbTTKh.DisplayMember =
"Value";
136             cmbTTKh.ValueMember =
"Key";
137         }
138
139         
public void HienThiTrangBanHang()
140         {
141             
//txtMaSanPham.Focus();
142             
this.ActiveControl = txtMaSanPham;
143             
//uctBanHang.uctBH.Focus();
144
145             btnThanhToan.Enabled =
false;
146             
//btnTheVipKhachHang.Enabled = false;
147             btnInHoaDon.Enabled =
false;
148
149             
//btnThemMoi.Enabled = false;
150
151             
//Insert vào bảng khách hàng lấy IdKhachHang
152             
//_idKhachHang = Controllers.KhachHangCtrl_tbl.InsertKhachHang_tbl(_idKhachHang, _tenKhachHang, _soDienThoai, _diaChi, _trangThai, _diemTichLuy, _tongTien, _tienKhach, _tienTraLai, _ngayMuaHang, _ghiChu);
153
154             
//xoa san pham
155             btnLoaiBo.Visible =
false;
156
157             
//dua ve gia tri ban dau
158             textBoxTienHang.Text =
"";
159             textBoxTongThanhToan.Text =
"";
160             textBoxTienKhachDua.Text =
"";
161             textBoxTraLaiKhach.Text =
"";
162
163             
this.HienThiKhach_ComboBox();
164
165             cmbTTKh.SelectedValue =
"MuaHang";
166             _TrangThaiGiaoDich =
"MuaHang";
167
168             
169         }
170         
/*
171         //timer eventhandler
172         
private void t_Tick(object sender, EventArgs e)
173         {
174             
175             //
get current time
176             
int hh = DateTime.Now.Hour;
177             
int mm = DateTime.Now.Minute;
178             
int ss = DateTime.Now.Second;
179
180             //time
181             
string time = "";
182
183             //padding leading zero
184             
if (hh < 10)
185             {
186                 time +=
"0" + hh;
187             }
188             
else
189             {
190                 time += hh;
191             }
192             time +=
":";
193
194             
if (mm < 10)
195             {
196                 time +=
"0" + mm;
197             }
198             
else
199             {
200                 time += mm;
201             }
202             time +=
":";
203
204             
if (ss < 10)
205             {
206                 time +=
"0" + ss;
207             }
208             
else
209             {
210                 time += ss;
211             }
212
213             //update label
214             lblClock.Text = time;
215             
216         }
217 */

218         
private void uctBanHang_Load(object sender, EventArgs e)
219         {
220
221             
//timer interval
222             
//t.Interval = 1000; //in milliseconds
223
224             
//t.Tick += new EventHandler(this.t_Tick);
225
226             
//start timer when form loads
227             
//t.Start(); //this will use t_Tick() method
228
229             
this.KiemTraBanQuyenPhanMem();
230             
/*
231             //txtMaSanPham.Focus();
232             
this.ActiveControl = txtMaSanPham;
233             //uctBanHang.uctBH.Focus();
234
235             btnThanhToan.Enabled =
false;
236             //btnTheVipKhachHang.Enabled =
false;
237             btnInHoaDon.Enabled =
false;
238
239             //btnThemMoi.Enabled =
false;
240
241             //Insert vào bảng khách hàng lấy IdKhachHang
242             //_idKhachHang = Controllers.KhachHangCtrl_tbl.InsertKhachHang_tbl(_idKhachHang, _tenKhachHang, _soDienThoai, _diaChi, _trangThai, _diemTichLuy, _tongTien, _tienKhach, _tienTraLai, _ngayMuaHang, _ghiChu);
243
244             //xoa san pham
245             btnLoaiBo.Visible =
false;
246
247             //dua ve gia tri ban dau
248             textBoxTienHang.Text =
"";
249             textBoxTongThanhToan.Text =
"";
250             textBoxTienKhachDua.Text =
"";
251             textBoxTraLaiKhach.Text =
"";
252
253             
this.HienThiKhach_ComboBox();
254
255             cmbTTKh.SelectedValue =
"MuaHang";
256             _TrangThaiGiaoDich =
"MuaHang";
257
258             
this.KiemTraBanQuyenPhanMem();
259             */

260
261         }
262
263         
264
265         
/*
266         //
267         
private string getUniqueID(string drive)
268         {
269             
if (drive == string.Empty)
270             {
271                 //Find first drive
272                 
foreach (DriveInfo compDrive in DriveInfo.GetDrives())
273                 {
274                     
if (compDrive.IsReady)
275                     {
276                         drive = compDrive.RootDirectory.ToString();
277                         
break;
278                     }
279                 }
280             }
281
282             
if (drive.EndsWith(":\\"))
283             {
284                 //C:\ -> C
285                 drive = drive.Substring(
0, drive.Length - 2);
286             }
287
288             //
string volumeSerial = getVolumeSerial(drive);
289             
string cpuID = getCPUID();
290
291             //Mix them up and
remove some useless 0's
292             
return cpuID;//.Substring(13) + cpuID.Substring(1, 4) + cpuID.Substring(4, 4);
293         }
294         */

295
296         
/*
297         
private string getVolumeSerial(string drive)
298         {
299             ManagementObject disk =
new ManagementObject(@"win32_logicaldisk.deviceid=""" + drive + @":""");
300             disk.Get();
301
302             
string volumeSerial = disk["VolumeSerialNumber"].ToString();
303             disk.Dispose();
304
305             
return volumeSerial;
306         }
307         */

308
309         
private void KiemTraBanQuyenPhanMem()
310         {
311             
//-BFEBFBFF000306A9 xem ma ngay 07/01/2018
312             _SerialNumberKey_GetHDD = CauHinhHeThong.getCPUID();
313
314             _KeyBanQuyen = _SerialNumberKey_GetHDD +
"top10pm6868";
315
316             
string docKey = System.IO.Directory.GetCurrentDirectory().Replace("\\bin\\Release", "\\Resources").Replace("\\bin\\Debug", "\\Resources");
317             XmlDocument itemKey =
new XmlDocument();
318             itemKey.Load(docKey +
"/ConnectCSDL.xml");
319
320             
var node = itemKey.SelectSingleNode("//*[@Id='PhamQuyetNghi']");
321
322             _SerialNumberKey_GetXML_File = node.InnerText;
323
324              kt = CauHinhHeThong.ValidateSHA1HashData(_KeyBanQuyen, _SerialNumberKey_GetXML_File);
325
326              
if (kt == false)
327              {
328                  DateTime ngayMh = DateTime.Now;
329
330                  //--
1962351068343182177106182132551691951898613538207155130
331                  
for (int ng = 0; ng < 32; ng++)
332                  {
333                      _KeyDungThu = _SerialNumberKey_GetHDD +
"demo6868" + CauHinhHeThong.Format_HienThiNgayThangNam(ngayMh.ToString(), false);
334                      //--20090516388200000demo686804/
12/2017
335                      kt = CauHinhHeThong.ValidateSHA1HashData(_KeyDungThu, _SerialNumberKey_GetXML_File);
336
337                      ngayMh = ngayMh.AddDays(+
1);
338                      
if (kt == true)
339                      {
340                          
break;
341                      }
342                  }
343
344                  
if (kt == false)
345                  {
346                      grbKey.Visible =
true;
347                      lblDungLai.Text =
"Dừng Lại!";
348                      lblTaiKhoanBanDaHet.Text =
"Tài khoản bạn đã hết thời gian dùng thử";
349                      lblHayLienHe.Text =
"Hãy liên hệ với nhà cung cấp.";
350                  }
351                  
else
352                  {
353                      grbKey.Visible =
false;
354                  }
355              }
356         }
357        
358         
public void HienThiTextBoxTheoSanPhamDangBan(string _tenSanPham, string _soLuong, string _giaBan)
359         {
360             txtSoLuong.Text = _soLuong;
361             txtGiaBan.Text = _giaBan;
362         }
363
364         
private void HienThiDanhSachSanPhamTheoKhachHang(int idKhachHang)
365         {
366             dgvDanhSachBanHang.Rows.Clear();
367             //Ẩn cột đầu tiên
368             dgvDanhSachBanHang.RowHeadersVisible =
false;
369             //-https://stackoverflow.com/questions/
17404969/right-align-a-column-in-datagridview-doesnt-work
370             
this.dgvDanhSachBanHang.Columns["STT"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
371             
this.dgvDanhSachBanHang.Columns["STT"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
372             //
this.dgvDanhSachNhapHang.Columns["STT"].SortMode = DataGridViewColumnSortMode.NotSortable;
373
374             //
this.dgvDanhSachBanHang.Columns["SoLuongDaBan"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
375             //
this.dgvDanhSachBanHang.Columns["SoLuongDaBan"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
376
377             
this.dgvDanhSachBanHang.Columns["SoLuongDaBanHienThi"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
378             
this.dgvDanhSachBanHang.Columns["SoLuongDaBanHienThi"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
379
380             
this.dgvDanhSachBanHang.Columns["GiaBan"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
381             
this.dgvDanhSachBanHang.Columns["GiaBan"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
382
383             
this.dgvDanhSachBanHang.Columns["ChietKhauPhanTram"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
384             
this.dgvDanhSachBanHang.Columns["ChietKhauPhanTram"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
385
386             
this.dgvDanhSachBanHang.Columns["Thue"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
387             
this.dgvDanhSachBanHang.Columns["Thue"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
388
389             
this.dgvDanhSachBanHang.Columns["TenDonViTinh"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
390             
this.dgvDanhSachBanHang.Columns["TenDonViTinh"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
391
392             
this.dgvDanhSachBanHang.Columns["ThanhTien_BH"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
393             
this.dgvDanhSachBanHang.Columns["ThanhTien_BH"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
394
395             tongtienthanhtoan_co_thueCk =
0;
396             tongtienhang_khong_thuevack =
0;
397
398             _stt =
0;
399
400             //
select từ bảng bán hàng //da toi uu sql cau lenh select
401             dt = Controllers.BanHangCtrl.FillDataSet_getBanHangByKhachHangId(
"", idKhachHang).Tables[0];
402             
if (dt.Rows.Count > 0)
403             {
404                 //loai bo cac san pham khong mua
405                 btnLoaiBo.Visible =
true;
406
407                
408                 //_tongSoBanGhi = Int32.Parse(dt.Rows[
0]["TongSoBanGhi"].ToString());
409                 
double soluongDaBan = 0;
410                 
double giaban = 0;
411                 
double thanhtien = 0;
412
413                 
double thue = 0;
414                 
double chietkhau = 0;
415
416
417
418                 //
int i = 0;
419                 
foreach (DataRow item in dt.Rows)
420                 {
421                     _stt +=
1;
422                     
int n = dgvDanhSachBanHang.Rows.Add();
423                     
424                     dgvDanhSachBanHang.Rows[n].Cells[
"IdBanHang"].Value = item["IdBanHang"].ToString();
425                     dgvDanhSachBanHang.Rows[n].Cells[
"NhapKhoId"].Value = item["NhapKhoId"].ToString();
426                     dgvDanhSachBanHang.Rows[n].Cells[
"STT"].Value = _stt.ToString();
427                     dgvDanhSachBanHang.Rows[n].Cells[
"MaSanPham"].Value = item["MaSanPham"].ToString();
428                     dgvDanhSachBanHang.Rows[n].Cells[
"TenSanPham"].Value = item["TenSanPham"].ToString();
429
430                     soluongDaBan = CauHinhHeThong.Format_SoDeTinhToan(item[
"SoLuongDaBan"].ToString(), false);
431                     giaban = CauHinhHeThong.Format_SoDeTinhToan(item[
"GiaBan"].ToString(), false);
432
433                     dgvDanhSachBanHang.Rows[n].Cells[
"SoLuongDaBan"].Value = CauHinhHeThong.Format_SoDeHienThi(soluongDaBan, false);
434                     
if (item["TrangThai"].ToString() == "2")
435                     {
436                         dgvDanhSachBanHang.Rows[n].Cells[
"SoLuongDaBanHienThi"].Value = CauHinhHeThong.Format_SoDeHienThi(soluongDaBan, false) + ". Hàng khuyễn mãi";
437                     }
438                     
else
439                     {
440                         dgvDanhSachBanHang.Rows[n].Cells[
"SoLuongDaBanHienThi"].Value = CauHinhHeThong.Format_SoDeHienThi(soluongDaBan, false);
441                     }
442                     
443                     
444                     dgvDanhSachBanHang.Rows[n].Cells[
"GiaBan"].Value = CauHinhHeThong.Format_SoDeHienThi(giaban, true);
445
446                     dgvDanhSachBanHang.Rows[n].Cells[
"TenDonViTinh"].Value = item["TenDonViTinh"].ToString();
447
448                     thue = CauHinhHeThong.Format_SoDeTinhToan(item[
"Thue"].ToString(),false);
449                     chietkhau = CauHinhHeThong.Format_SoDeTinhToan(item[
"ChietKhauPhanTram"].ToString(),false);
450
451                     dgvDanhSachBanHang.Rows[n].Cells[
"ChietKhauPhanTram"].Value = CauHinhHeThong.Format_SoDeHienThi(chietkhau, false);
452
453                     dgvDanhSachBanHang.Rows[n].Cells[
"Thue"].Value = CauHinhHeThong.Format_SoDeHienThi(thue, false);
454
455                     //Tính tổng một mặt hàng gồm nhiều sản phẩm hoặc
1 sản phẩm
456                     thanhtien = CauHinhHeThong.BanHang_ThanhTien(giaban, soluongDaBan, thue, chietkhau);/// soluong* giaban;
457
458                     tongtienthanhtoan_co_thueCk += thanhtien;
459                     tongtienhang_khong_thuevack += (giaban * soluongDaBan);
460
461                     dgvDanhSachBanHang.Rows[n].Cells[
"ThanhTien_BH"].Value = CauHinhHeThong.Format_SoDeHienThi(thanhtien, true);// item["ThanhTien"].ToString();
462                     dgvDanhSachBanHang.Rows[n].Cells[
"Xoa"].Value = "false";
463                 }
464                 
465                 //
this.KetQuaTinhTien();
466                 textBoxTienHang.Text = CauHinhHeThong.Format_SoDeHienThi(tongtienhang_khong_thuevack,
true);
467                 textBoxTongThanhToan.Text = CauHinhHeThong.Format_SoDeHienThi(tongtienthanhtoan_co_thueCk,
true);
468
469             }
470             
else
471             {
472                 //loai bo cac san pham khong mua
473                 btnLoaiBo.Visible =
false;
474
475                 tongtienthanhtoan_co_thueCk =
0;
476                 tongtienhang_khong_thuevack =
0;
477
478                 textBoxTienHang.Text =
"0";
479                 textBoxTongThanhToan.Text =
"0";
480                 _stt =
0;
481                 
482             }
483
484             textBoxTienKhachDua.Text =
"";
485             textBoxTraLaiKhach.Text =
"";
486             //
this.KiemTraHangKhuyenMai();
487             txtTongSoMatHang.Text = _stt.ToString() +
" = " + textBoxTongThanhToan.Text.Trim();
488         }
489
490         //-http://aptech.vn/kien-thuc-tin-hoc/c-truyen-du-lieu-giua-cac-form.html
491         
private void btnThanhToan_Click(object sender, EventArgs e)
492         {
493             //bat dau thanh toan =
false
494             _getTrangThaiThanhToan =
false;
495             
496            //kiểm tra thanh toán mua hàng có lưu thông tin khách hàng hay không
497            frmBanHangThanhToan frmBHTT =
new frmBanHangThanhToan(tongtienthanhtoan_co_thueCk, _idKhachHang, CauHinhHeThong.LUU_THONG_TIN_KHACH_MUA_HANG, _TrangThaiGiaoDich);
498             
499            frmBHTT.MyGetData =
new frmBanHangThanhToan.GetString(GetValue);
500             
501            frmBHTT.ShowDialog();
502
503            //Ẩn nút khi click
504            //btnThanhToan.Enabled =
false;
505            
this.ActiveControl = txtMaSanPham;
506
507            
if (CauHinhHeThong.IN_HOA_DON_SAU_KHI_BAN == "checked" && btnInHoaDon.Enabled==true)
508            {
509                
this.ThucHienLenhIn();
510
511            }
512         }
513
514         
private void txtTienKhach_TextChanged(object sender, EventArgs e)
515         {
516
517         }
518
519         
private void btnLoaiBo_Click(object sender, EventArgs e)
520         {
521             DialogResult dr = MessageBox.Show(
"Bạn có chắc chắn xóa?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
522             
if (dr == DialogResult.Yes)
523             {
524                 
foreach (DataGridViewRow dataRow in dgvDanhSachBanHang.Rows)
525                 {
526                     
if (bool.Parse(dataRow.Cells["Xoa"].Value.ToString()))
527                     {
528                          Controllers.BanHangCtrl.DeleteBanHang(Int32.Parse(dataRow.Cells[
"IdBanHang"].Value.ToString()));
529                          txtGiaBan.Text =
"";
530                          txtSoLuong.Text =
"";
531                     }
532                 }
533
534                 //
if (i > 0)
535                 //{
536                 //dua chuot ve ma san pham
537                 txtMaSanPham.Focus();
538                //
539                 //}
540                 
541             }
542             
else
543             {
544                 
return;
545             }
546              
547    
548             //Goi lai danh sach san pham
549             
this.HienThiDanhSachSanPhamTheoKhachHang(_idKhachHang);
550         }
551
552         
private void btnTimThemSanPham_Click(object sender, EventArgs e)
553         {
554             //txtSoLuong.Enabled =
false;
555             //txtGiaBan.Enabled =
false;
556             //lan dau load textbox gia va soluong
557             loadlandau =
true;
558             //_soLuong =
1;
559             //thanhTien =
0;
560             _soLuong_DaBan =
1;
561
562             btnThanhToan.Enabled =
true;
563             //btnTheVipKhachHang.Enabled =
true;
564
565             //Tìm kiếm từ bảng nhập kho
566             _maSanPham = txtMaSanPham.Text.Trim();
567             
if (string.IsNullOrEmpty(_maSanPham))
568             {
569                 MessageBox.Show(
"Bạn chưa nhập mã sản phẩm");
570                 txtMaSanPham.Focus();
571                 
return;
572             }
573             //Tìm các sản phẩm trong bảng bán hàng
574             //dt = tbl_BanHang
575             //dt = Controllers.BanHangCtrl.FillDataSet_getBanHangByKhachHangId(_maSanPham, _idKhachHang).Tables[
0];
576             //dt = Controllers.BanHangCtrl.FillDataSet_getBanHangByKhachHangId_MuaHang(_maSanPham, _idKhachHang, _trangThai).Tables[
0];
577             //dt = Controllers.BanHangCtrl.FillDataSet_getBanHangByKhachHangId_MuaHang2(_maSanPham, _idKhachHang, _trangThai, _getIdKho).Tables[
0];
578
579             ///
/da toi uu sql cau lenh select
580             dt = Controllers.uctBanHangCtrl.uctBanHang_BanHang_gets(_maSanPham, _trangThai, _idKhachHang).Tables[
0];
581
582             
if (dt.Rows.Count > 0)
583             {
584                 _getIdKho = Int32.Parse(dt.Rows[
0]["NhapKhoId"].ToString());
585
586                 //so luong trong kho
587                 _soLuong_NhapKho =
float.Parse(dt.Rows[0]["SoLuong"].ToString());
588
589                 _soLuong_DaBan =
float.Parse(dt.Rows[0]["SoLuongDaBan"].ToString()) + 1;
590
591                 _giaBan = CauHinhHeThong.Format_SoDeTinhToan(dt.Rows[
0]["GiaBan"].ToString(),false);
592                 //Tìm thấy sản phẩm trong bảng bán hàng thì update
593                 txtGiaBan.Text = CauHinhHeThong.Format_SoDeHienThi(_giaBan,
true) ;
594
595                 txtSoLuong.Text = _soLuong_DaBan.ToString();
596                 //txtSoLuong.Text = _soLuong.ToString();
597
598                 //lblTenSanPham.Text = dt.Rows[
0]["TenSanPham"].ToString();
599                 txtMaSanPham.Text =
string.Empty;
600                 _tenSanPham = dt.Rows[
0]["TenSanPham"].ToString();
601                 _idBanHang = Int32.Parse(dt.Rows[
0]["IdBanHang"].ToString());
602                 
603                 
if (string.IsNullOrEmpty(txtGiaBan.Text.ToString()))
604                 {
605                     _giaBan =
0;
606                 }
607
608                 //_thanhTien = _soLuong_DaBan * _giaBan;
609                 //Update số lượng sản phẩm
610                 Controllers.BanHangCtrl.Update_BanHang_Update_SL_Gia(_idBanHang, _tenSanPham, _giaBan, _thanhTien, _soLuong_NhapKho, _soLuong_DaBan);
611             }
612             
else
613             {
614                 //Không có sản phẩm trong bảng bán hàng
615                 
616                 //tìm sản phẩm trong bảng kho
617                 //dt = Controllers.NhapKhoCtrl.FillDataSet_NhapKhoGetByMaSanPham(_maSanPham).Tables[
0];
618
619                 
620                 //lay cac san pham trong kho ban het hoac chua ban het
621                 //dtKho = Controllers.KhoCtrl.FillDataSet_getKho_ByMaSanPham(_maSanPham).Tables[
0];
622                 //dtKho = Controllers.KhoCtrl.FillDataSet_getKho_ByMaSanPham_OrMaVietTat(_maSanPham).Tables[
0];
623                 //dtKho = Controllers.KhoCtrl.FillDataSet_getKho_ByMaSanPhamByNotInIdKho(_getIdKho, _maSanPham, _idKhachHang).Tables[
0];
624                 //lay cac san pham trong kho chua ban het
625                 //da toi uu sql cau lenh
select
626                 dtKho = Controllers.uctBanHangCtrl.uctBanHang_Kho_get(_maSanPham,
"NhapHang").Tables[0];
627
628                 //kiểm tra có tìm thấy trong bảng nhập kho hay không?
629                 
if (dtKho.Rows.Count > 0)
630                 {
631                     //Tìm thấy sản phẩm trong bảng kho
632                     _tenSanPham = dtKho.Rows[
0]["TenSanPham"].ToString();
633                     _giaBan = CauHinhHeThong.Format_SoDeTinhToan(dtKho.Rows[
0]["GiaBanLe"].ToString(),false);
634
635                     //_thanhTien = _giaBan;
636
637                     _soLuong_NhapKho =
float.Parse(dtKho.Rows[0]["SoLuong"].ToString());
638                     _soLuong_DaBan =
float.Parse(dtKho.Rows[0]["SoLuongDaBan"].ToString());
639
640                     _getsoLuongTonKho = _soLuong_NhapKho - _soLuong_DaBan;
641
642                     txtGiaBan.Text = CauHinhHeThong.Format_SoDeHienThi(_giaBan,
true);// _giaBan;
643                     _chietKhauPhanTram = CauHinhHeThong.Format_SoDeTinhToan(dtKho.Rows[
0]["ChietKhauPTBanHang"].ToString(), false);
644                     _thue = CauHinhHeThong.Format_SoDeTinhToan(dtKho.Rows[
0]["ThueBanHang"].ToString(), false);
645
646                     txtSoLuong.Text =
"1";
647
648
649                     _donViTinh = dtKho.Rows[
0]["TenDonViTinh"].ToString();
650                     _donViTinhId = Int32.Parse(dtKho.Rows[
0]["DonViTinhId"].ToString());
651                     _trangThai =
0;
652                     //_nhapKhoId = Int32.Parse(dtKho.Rows[
0]["IdKho"].ToString());
653                     _getIdKho = Int32.Parse(dtKho.Rows[
0]["IdKho"].ToString());
654
655                     
656                     //Thêm vào bảng bán hàng
657                     _idBanHang = Controllers.BanHangCtrl.InsertBanHang(_idBanHang, _maSanPham, _tenSanPham, _giaBan, _thanhTien, _getsoLuongTonKho, _donViTinh, _donViTinhId, _idKhachHang, _ngayMuaHang, _trangThai, _getIdKho, _chietKhauPhanTram, _thue,
1);
658
659                                   
660                     txtMaSanPham.Text =
string.Empty;
661
662                     //lblTenSanPham.Text = _tenSanPham;// dt.Rows[
0]["TenSanPham"].ToString();
663                 }
664                 
else
665                 {
666                     //Không tìm thấy trong bảng kho
667                     //Thêm mới sản phẩm vào bảng kho
668                     //Hiển thị form nhập kho lên
669                     frmNhapKho frmNK =
new frmNhapKho(_idKhachHang, _maSanPham);
670                     //frmNhapKho frmNk =
new frmNhapKho(int idKhachHang, string maSanPham);
671                     //frmNk.txt_MaSanPham.Text = _maSanPham;
672                     
673                     //frmNk.lbl_idKhachHang.Text = _idKhachHang.ToString();
674                     frmNK.ShowDialog();
675
676                     txtMaSanPham.Text =
string.Empty;
677                     txtGiaBan.Text =
"";
678                     txtSoLuong.Text =
"";
679                     //_idBanHang = Int32.Parse(frmNk.lbl_idBanHang.Text.ToString());
680                 }
681             }
682
683             //
select từ bảng bán hàng
684             
this.HienThiDanhSachSanPhamTheoKhachHang(_idKhachHang);
685
686             //Bật âm thanh trong bán hàng
687             WMPLib.WindowsMediaPlayer wplayer =
new WMPLib.WindowsMediaPlayer();
688             
string startupPath = System.IO.Directory.GetCurrentDirectory().Replace("\\bin\\Release", "\\Resources").Replace("\\bin\\Debug", "\\Resources");
689             wplayer.URL = startupPath +
"/Audio-QuanLyBanHang.mp3";
690             wplayer.controls.play();
691
692             //kiêm tra hàng khuyễn mãi khi ấn enter
693             
this.KiemTraHangKhuyenMai();
694
695         }
696
697
698         
private void txtMaSanPham_TextChanged(object sender, EventArgs e)
699         {
700         }
701        
702
703         //Tính tổng tiền trong
1 cột
704         
private double TongTienHang()
705         {
706             sum =
0;
707             
double thanht = 0;
708            
709             
for (int i = 0; i < dgvDanhSachBanHang.Rows.Count; ++i)
710             {
711                 
712                 thanht =
0;
713                 
try
714                 {
715                     thanht = CauHinhHeThong.Format_SoDeTinhToan(dgvDanhSachBanHang.Rows[i].Cells[
"ThanhTien_BH"].Value.ToString(),true);
716                 }
717                 
catch { }
718
719                 sum += thanht;
720             }
721
722             
return sum;
723         }
724
725         
private void txtSoLuong_TextChanged(object sender, EventArgs e)
726         {
727             
if (loadlandau == true) { return; }
728
729             
try
730             {
731                 
string value = txtSoLuong.Text.Replace(CauHinhHeThong.PHAN_CACH_HANG_NGHIN, "");
732                 
ulong ul = 0;
733
734                 
if (ulong.TryParse(value, out ul))
735                 {
736                     txtSoLuong.TextChanged -= txtSoLuong_TextChanged;
737
738                     
if (txtSoLuong.Text.StartsWith("0"))
739                     {
740                         txtSoLuong.Text = ul.ToString();
741                     }
742                     
else
743                     {
744                         txtSoLuong.Text = CauHinhHeThong.DoFormat_NhapSoTrongText(
value);
745                     }
746
747
748                     txtSoLuong.SelectionStart = txtSoLuong.Text.Length;
749                     txtSoLuong.TextChanged += txtSoLuong_TextChanged;
750                 }
751                 
else
752                 {
753                     
if (txtSoLuong.Text.StartsWith(CauHinhHeThong.DAU_PHAY))
754                     {
755                         txtSoLuong.TextChanged -= txtSoLuong_TextChanged;
756                         txtSoLuong.Text =
"0" + txtSoLuong.Text;
757                         txtSoLuong.SelectionStart = txtSoLuong.Text.Length;
758                         txtSoLuong.TextChanged += txtSoLuong_TextChanged;
759                     }
760                 }
761
762                 //hien thi tong
1 mat hang va tong mot don hang
763                 
this.Update_SanPham_Khi_ThayDoiGiaBan_SoLuong();
764             }
765             
catch
766             {
767             }
768             
769         }
770
771         
private void txtGiaBan_TextChanged(object sender, EventArgs e)
772         {
773             
if (loadlandau == true) { return; }
774
775             
try
776             {
777                 
string value = txtGiaBan.Text.Replace(CauHinhHeThong.PHAN_CACH_HANG_NGHIN, "");
778                 
ulong ul = 0;
779
780                 
if (ulong.TryParse(value, out ul))
781                 {
782                     txtGiaBan.TextChanged -= txtGiaBan_TextChanged;
783
784                     
if (txtGiaBan.Text.StartsWith("0"))
785                     {
786                         txtGiaBan.Text = ul.ToString();
787                     }
788                     
else
789                     {
790                         txtGiaBan.Text = CauHinhHeThong.DoFormat_NhapSoTrongText(
value);
791                     }
792
793                     txtGiaBan.SelectionStart = txtGiaBan.Text.Length;
794                     txtGiaBan.TextChanged += txtGiaBan_TextChanged;
795                 }
796                 
else
797                 {
798                     
if (txtGiaBan.Text.StartsWith(CauHinhHeThong.DAU_PHAY))
799                     {
800                         txtGiaBan.TextChanged -= txtGiaBan_TextChanged;
801                         txtGiaBan.Text =
"0" + txtGiaBan.Text;
802                         txtGiaBan.SelectionStart = txtGiaBan.Text.Length;
803                         txtGiaBan.TextChanged += txtGiaBan_TextChanged;
804                     }
805                 }
806
807                 //hien thi tong
1 mat hang va tong mot don hang
808                 Update_SanPham_Khi_ThayDoiGiaBan_SoLuong();
809             }
810             
catch
811             {
812             }
813             
814         }
815
816         
private void txtGiaBan_KeyPress(object sender, KeyPressEventArgs e)
817         {
818             CauHinhHeThong.NhapSoTrongTextBox(sender, e);
819         }
820
821         
private void txtSoLuong_KeyPress(object sender, KeyPressEventArgs e)
822         {
823             CauHinhHeThong.NhapSoTrongTextBox(sender, e);
824         }
825
826         
private void btnThayDoiGia_Click(object sender, EventArgs e)
827         {
828             //txtGiaBan.Enabled =
true;
829             //txtSoLuong.Enabled =
false;
830         }
831
832         
private void btnThayDoiSoLuong_Click(object sender, EventArgs e)
833         {
834             //txtSoLuong.Enabled =
true;
835             //txtGiaBan.Enabled =
false;
836         }
837
838         
private void Update_SanPham_Khi_ThayDoiGiaBan_SoLuong()
839         {
840             //_idBanHang =
841             //_tenSanPham = lblTenSanPham.Text;
842             _giaBan = CauHinhHeThong.Format_SoDeTinhToan(txtGiaBan.Text.Trim(),
true);
843             //_soLuong = Int32.Parse(CauHinhHeThong.Format_SoDeTinhToan(txtSoLuong.Text.Trim()).ToString());// Int32.Parse(txtSoLuong.Text.ToString().Replace(
",", ""));
844             //_soLuong = (
float)CauHinhHeThong.Format_SoDeTinhToan(txtSoLuong.Text.Trim(), true);
845             _soLuong_DaBan = (
float)CauHinhHeThong.Format_SoDeTinhToan(txtSoLuong.Text.Trim(), true);
846             //thanhTien =
0;
847             //thanhTien = _soLuong * Int32.Parse(txtGiaBan.Text.Replace(
",", ""));
848             //_thanhTien = _soLuong_DaBan * _giaBan;//
string.Format("{0:#,#}", thanhTien);
849
850             //Hien thi thong bao neu so luong update nhieu hon so luong trong kho
851
852             Controllers.BanHangCtrl.Update_BanHang_Update_SL_Gia(_idBanHang, _tenSanPham, _giaBan, _thanhTien, _soLuong_NhapKho, _soLuong_DaBan);
853             /*
854             
if (_getsoLuongTonKho > _soLuong_DaBan)
855             {
856                 Controllers.BanHangCtrl.Update_BanHang_Update_SL_Gia(_idBanHang, _tenSanPham, _giaBan, _thanhTien, _soLuong_NhapKho, _soLuong_DaBan);
857
858             }
859             
else
860             {
861                 Controllers.BanHangCtrl.Update_BanHang_Update_SL_Gia(_idBanHang, _tenSanPham, _giaBan, _thanhTien, _soLuong_NhapKho, _getsoLuongTonKho);
862
863                 MessageBox.Show(
"Số lượng không vượt quá " + _getsoLuongTonKho.ToString());
864
865             }
866              */

867
868             
//kiem tra so luong trong kho
869             
//msp 4, sokho 10, sldb 8
870             
//msp 4, sldb 9
871             
//idkhohien tai, msp,
872             
//lay san pham tiep theo
873             
/*
874             DataTable dtTonK =
new DataTable();
875             dtTonK = Controllers.KhoCtrl.FillDataSet_GetSCac_SP_TonKho_ByMaSanPham(_maSanPham,
0, _maSanPham).Tables[0];
876             
if (dtTonK.Rows.Count > 0)
877             {
878                 
float soluongTrongKho = 0;
879                 
float soluongDaBan = 0;
880                 
float soLuongTxt = 0;
881                 
float soLuongTonKho = 0;
882
883                 
foreach (DataRow item in dtTonK.Rows)
884                 {
885
886                     soluongTrongKho =
float.Parse(item["SoLuong"].ToString());
887                     soluongDaBan =
float.Parse(item["SoLuongDaBan"].ToString());
888
889                     soLuongTonKho = soluongTrongKho - soluongDaBan;
890                     
891                     
if (soLuongTonKho >= soLuongTxt)
892                     {
893                         //update soluong txt vao bang ban hang
894                         
895                         
return;
896                     }
897                     
else
898                     {
899                         //them moi vao bang ban hang
900                     }
901
902                 }
903             }
904
905             */

906
907            
908             ///
dt = Controllers.BanHangCtrl.FillDataSet_getBanHangByKhachHangId("-1", _idKhachHang).Tables[0];
909             
//dgvDanhSachBanHang.DataSource = dt;
910             
//Hien thi danh sach san pham
911             
this.HienThiDanhSachSanPhamTheoKhachHang(_idKhachHang);
912
913             
//Hien thi tong gia tien
914             
//lblTongTienThanhToan.Text = string.Format("{0:#,#}", TongRowInColumn("ThanhTiens"));
915
916         }
917
918         
//private void button1_Click(object sender, EventArgs e)
919         
//{
920             
//string value = new DataTable().Compute( txtTeanSanPham.Text.ToString(), null).ToString();
921             
//MessageBox.Show(value);
922
923             
//frmBanHangThanhToan frmBHTT = new frmBanHangThanhToan();
924             
//frmBHTT.MyGetData = new frmBanHangThanhToan.GetString(GetValue);
925             
//frmBHTT.Show();
926
927         
//}
928
929
930         
public void GetValue(string tienkhachhangdua, string tientralaikhachhang, bool btnTrangThai_HuyFalse_hoac_LuuTrue, int idKhachhang)
931         {
932             textBoxTienKhachDua.Text = tienkhachhangdua;
933             textBoxTraLaiKhach.Text = tientralaikhachhang;
934             btnThanhToan.Enabled = !btnTrangThai_HuyFalse_hoac_LuuTrue;
935             btnLoaiBo.Visible = !btnTrangThai_HuyFalse_hoac_LuuTrue;
936             _idKhachHang = idKhachhang;
937             
938             
//txtMaSanPham.Enabled = !btnTrangThai_HuyFalse_hoac_LuuTrue;
939             
940             
//txtSoLuong.Enabled = !btnTrangThai_HuyFalse_hoac_LuuTrue;
941             
//txtGiaBan.Enabled = !btnTrangThai_HuyFalse_hoac_LuuTrue;
942
943             
//btnThemMoi.Enabled = btnTrangThai_HuyFalse_hoac_LuuTrue;
944             btnInHoaDon.Enabled = btnTrangThai_HuyFalse_hoac_LuuTrue;
945
946             _getTrangThaiThanhToan = btnTrangThai_HuyFalse_hoac_LuuTrue;
947
948             
if (btnTrangThai_HuyFalse_hoac_LuuTrue == true)
949             {
950                 
951
952                 
//thanh toán thành công
953                 lblThongBao.Visible =
true;
954
955                 
956                 
/*var t = new System.Windows.Forms.Timer();
957                 t.Interval =
3000; // it will Tick in 3 seconds
958                 t.Tick += (s, ex) =>
959                 {
960                     lblThongBao.Visible =
false;
961                     t.Stop();
962                 };
963                 t.Start();
964                 */

965                 
966                 loadlandau =
true;
967                 txtGiaBan.Text =
"";
968                 txtSoLuong.Text =
"";
969
970                 
//_pageIndexKhTruoc = _pageIndexKhTruoc + 0 ;
971
972                 _idKhachHang =
0;
973
974                 
975             }
976
977             
//this.ActiveControl = txtMaSanPham;
978
979             
980         }
981
982         
983         
//hiển thị thông tin khách hàng theo the vip
984         
private void GetValue_ThongTinKhachHang(int idkh, bool btnTrangThai, string tienkhachDua)
985         {
986             
//lblHoVaTen.Text = hovaten;
987             
//lblSoDienThoai.Text = sodienthoai;
988             
//lblDiaChi.Text = diachi;
989             
//lblGhiChu.Text = ghichu;
990
991             
//lblDiemTichLuy.Text = CauHinhHeThong.Format_SoDeHienThi(diemtichluy, true);
992             
//diemTichLuy_str = diemtichluy;
993
994             
//panelTT_KhDungTheVip.Visible = !btnTrangThai;
995             
//ThongTinKhachHang_Bool(btnTrangThai);
996             
if (btnTrangThai == true)
997             {
998                 
this.HienThiDanhSachSanPhamTheoKhachHang(idkh);
999
1000                 _idKhachHang = idkh;
1001
1002                 textBoxTienKhachDua.Text = tienkhachDua;
1003                 
1004
1005                 lblMaDonHang.Text = CauHinhHeThong.TIEU_DE_NGU_HOA_DON_BAN_HANG + _idKhachHang.ToString();
1006
1007                 txtMaSanPham.Focus();
1008
1009                 DataTable dtKhget =
new DataTable();
1010                 dtKhget = Controllers.KhachHangCtrl_tbl.FillDataSet_KhachHang_GetBy_IdKhachHang(_idKhachHang).Tables[
0];
1011                 
if (dtKhget.Rows.Count > 0)
1012                 {
1013                     textBoxTienKhachDua.Text = CauHinhHeThong.Format_SoDeHienThi(CauHinhHeThong.Format_SoDeTinhToan(dtKhget.Rows[
0]["TienKhach"].ToString(), false), true);
1014                     textBoxTraLaiKhach.Text = CauHinhHeThong.Format_SoDeHienThi(CauHinhHeThong.Format_SoDeTinhToan(dtKhget.Rows[
0]["TienTraLai"].ToString(), false), true);
1015                 }
1016             }
1017
1018         }
1019
1020         
1021         
/*
1022         
private void ThongTinKhachHang_Bool(bool e)
1023         {
1024             lblHoVaTen.Visible = e;
1025             lblSoDienThoai.Visible = e;
1026             lblDiaChi.Visible = e;
1027             lblGhiChu.Visible = e;
1028             lblDiemTichLuy.Visible = e;
1029
1030             lbl_txtHoVaTen.Visible = e;
1031             lbl_txtSoDienThoai.Visible = e;
1032             lbl_txtDiaChi.Visible = e;
1033             lbl_txtGhiChu.Visible = e;
1034             lbl_txtDiemTichLuy.Visible = e;
1035             chkSuDungThanhToan.Visible = e;
1036         }
1037         */

1038
1039         
private void txtMaSanPham_Enter(object sender, EventArgs e)
1040         {
1041
1042         }
1043
1044         
/*
1045         
private void pd_PrintPage(object sender, PrintPageEventArgs e)
1046         {
1047             //Single yPos =
0;
1048             //Single leftMargin = e.MarginBounds.Left;
1049             //Single topMargin = e.MarginBounds.Top;
1050             //Image img = Image.FromFile(
"logo.bmp");
1051             //Rectangle logo =
new Rectangle(40, 40, 50, 50);
1052             //
using (Font printFont = new Font("Arial", 20.0f))
1053             //{
1054                 //e.Graphics.DrawImage(img, logo);
1055                 //e.Graphics.DrawString(
"Header", printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
1056            // }
1057             //
using (SolidBrush blueBrush = new SolidBrush(Color.Black))
1058             //{
1059                // Rectangle rect =
new Rectangle(100, 100, 500, 120);
1060               // e.Graphics.FillRectangle(blueBrush, rect);
1061
1062                 //e.Graphics.DrawString(
"Cafe Cat Tường" + this.Width.ToString(), new Font("Arial", 12, FontStyle.Regular), Brushes.Black, new Point(600, 100));
1063
1064                 //e.Graphics.DrawString(
"Abc ok:", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, new Point(25, 200));
1065
1066
1067
1068             //}
1069
1070             
1071             DataTable tmp_Table =
new DataTable();
1072             tmp_Table.Columns.AddRange(
new DataColumn[3] { new DataColumn("Id", typeof(int)),
1073                                 
new DataColumn("Name", typeof(string)),
1074                                 
new DataColumn("Country",typeof(string)) });
1075             tmp_Table.Rows.Add(
1, "John Hammond", "United States");
1076             tmp_Table.Rows.Add(
2, "Mudassar Khan", "India");
1077             tmp_Table.Rows.Add(
3, "Suzanne Mathews", "France");
1078             tmp_Table.Rows.Add(
4, "Robert Schidner", "Russia");
1079             tmp_Table.Rows.Add(
5, "John Hammond", "United States");
1080             tmp_Table.Rows.Add(
6, "Mudassar Khan", "India");
1081             tmp_Table.Rows.Add(
7, "Mudassar Khan", "India");
1082             tmp_Table.Rows.Add(
8, "Mudassar Khan", "India");
1083             tmp_Table.Rows.Add(
9, "Mudassar Khan", "India");
1084             tmp_Table.Rows.Add(
10, "Mudassar Khan", "India");
1085             tmp_Table.Rows.Add(
11, "Mudassar Khan", "India");
1086             tmp_Table.Rows.Add(
12, "Mudassar Khan", "India");
1087             tmp_Table.Rows.Add(
13, "Mudassar Khan", "India");
1088             tmp_Table.Rows.Add(
14, "Mudassar Khan", "India");
1089             tmp_Table.Rows.Add(
15, "Mudassar Khan", "India");
1090             tmp_Table.Rows.Add(
16, "Mudassar Khan", "India");
1091
1092             
for (int x = 17; x < 70; x++)
1093             {
1094                 tmp_Table.Rows.Add(x,
"Mudassar Khan", "India" + x);
1095             }
1096             
1097             
string header = "Master List";
1098             
string footer = string.Empty;
1099
1100             
int columnCount = tmp_Table.Columns.Count;
1101             
int maxRows = tmp_Table.Rows.Count;
1102
1103
1104             
using (Graphics g = e.Graphics)
1105             {
1106                 Brush brush =
new SolidBrush(Color.Black);
1107                 Pen pen =
new Pen(brush);
1108                 Font font =
new Font("Arial", 10);
1109                 SizeF size;
1110
1111                 
int x = 0, y = 0, width = 130;
1112                 
float xPadding;
1113
1114                 // Here title
is written, sets to top-middle position of the page
1115                 size = g.MeasureString(header, font);
1116                 xPadding = (width - size.Width) /
2;
1117                 g.DrawString(header, font, brush, x +
250, y + 5);
1118
1119                 x =
0;
1120                 y +=
30;
1121
1122                 
1123                 // Writes
out all column names in designated locations, aligned as a table
1124                 
foreach (DataColumn column in tmp_Table.Columns)
1125                 {
1126                     size = g.MeasureString(column.ColumnName, font);
1127                     xPadding = (width - size.Width) /
2;
1128                     g.DrawString(column.ColumnName, font, brush, x + xPadding, y +
5);
1129                     x += width;
1130                 }
1131                
1132                 x =
0;
1133                 y +=
30;
1134
1135                 
int rowcount = 0;
1136                 
1137                 // Process each row and place each item under correct column.
1138                 
foreach (DataRow row in tmp_Table.Rows)
1139                 {
1140                     rowcount++;
1141
1142                     
1143                     
for (int i = 0; i < columnCount; i++)
1144                     {
1145                         size = g.MeasureString(row[i].ToString(), font);
1146                         xPadding = (width - size.Width) /
2;
1147
1148                         g.DrawString(row[i].ToString(), font, brush, x + xPadding, y +
5);
1149                         x += width;
1150                     }
1151                     
1152                     e.HasMorePages = rowcount -
1 < maxRows;
1153
1154                     x =
0;
1155                     y +=
30;
1156                     
1157                 }
1158                 
1159                 
1160
1161                 footer =
"Total: " + maxRows + " |Signed:..........................";
1162                 size = g.MeasureString(footer, font);
1163                 xPadding = (width - size.Width) /
2;
1164                 g.DrawString(footer, font, brush, x +
250, y + 5);
1165
1166                 x =
0;
1167                 y +=
30;
1168             }
1169
1170             
1171
1172         }
1173
1174         */

1175
1176         
//---https://stackoverflow.com/questions/19321899/showing-print-preview-in-c-sharp
1177         
private void btnInHoaDon_Click(object sender, EventArgs e)
1178         {
1179             
this.button1_Click(sender, e);
1180         }
1181
1182         
1183
1184         
private void txtMaSanPham_KeyDown(object sender, KeyEventArgs e)
1185         {
1186             
1187             
if (CauHinhHeThong.BARCODE_THEM_MOI_KHACH_HANG == txtMaSanPham.Text.Trim())
1188             {
1189                 e.SuppressKeyPress =
true;
1190
1191                 
this.btnThemMoi_Click(sender, e);
1192
1193                 txtMaSanPham.Text =
"";
1194                 
return;
1195             }
1196
1197
1198             
if (((e.Control && e.KeyCode == Keys.S) || CauHinhHeThong.BARCODE_THANH_TOAN_BAN_HANG == txtMaSanPham.Text.Trim()) && btnThanhToan.Enabled == true)
1199             {
1200
1201                 e.SuppressKeyPress =
true;
1202
1203                 btnThanhToan_Click(sender, e);
1204
1205                 txtMaSanPham.Text =
"";
1206                 
return;
1207             }
1208
1209             
1210
1211
1212             
if (CauHinhHeThong.BARCODE_DON_HANG_CHUA_THANH_TOAN == txtMaSanPham.Text.Trim())
1213             {
1214                 
this.KhachHangTruocClick();
1215                 txtMaSanPham.Text =
"";
1216                 
return;
1217             }
1218
1219             
1220
1221             
if (e.KeyCode == Keys.Enter && CauHinhHeThong.BARCODE_THANH_TOAN_BAN_HANG != txtMaSanPham.Text.Trim() && CauHinhHeThong.BARCODE_THEM_MOI_KHACH_HANG != txtMaSanPham.Text.Trim() && CauHinhHeThong.BARCODE_DON_HANG_CHUA_THANH_TOAN != txtMaSanPham.Text.Trim())
1222             {
1223                 
//Ấn enter không có tiếng kêu
1224                 e.SuppressKeyPress =
true;
1225
1226                 
if (_idKhachHang == 0)
1227                 {
1228                     
//Insert vào bảng khách hàng lấy IdKhachHang
1229                     
//_idKhachHang = Controllers.KhachHangCtrl_tbl.InsertKhachHang_tbl(_idKhachHang, _tenKhachHang, _soDienThoai, _diaChi, _trangThai, _diemTichLuy, _tongTien, _tienKhach, _tienTraLai, _ngayMuaHang, _ghiChu, _TrangThaiGiaoDich);
1230                     _idKhachHang = Controllers.uctBanHangCtrl.uctBanHang_KhachHang_Insert(_trangThai, _ngayMuaHang, _TrangThaiGiaoDich);
1231                     _idKhBack = _idKhachHang;
1232
1233                     
//ẩn thông báo
1234                     lblThongBao.Visible =
false;
1235
1236                     lblMaDonHang.Text = CauHinhHeThong.TIEU_DE_NGU_HOA_DON_BAN_HANG + _idKhachHang.ToString();
1237                 }
1238
1239                 
if (_getTrangThaiThanhToan == true)
1240                 {
1241                     
//this.uctBanHang_Load(sender, e);
1242                     
this.HienThiTrangBanHang();
1243                     
//ẩn thông báo
1244                     lblThongBao.Visible =
false;
1245                 }
1246
1247
1248                 btnTimThemSanPham_Click(
this, new EventArgs());
1249             }
1250             
1251         }
1252
1253
1254         
private void cmbThueGTGT_TextChanged(object sender, EventArgs e)
1255         {
1256             
//lblThueGTGT.Text = string.Format("{0:#,#}", this.ThueGiaTriGiaTang());
1257
1258             
//tienHang = TongThanhTienHang();
1259             
//thueGTGT = ThueGiaTriGiaTang();
1260
1261             
//if(!string.IsNullOrEmpty(textBox2Tien.Text.Trim()) && (textBox2Tien.Text.Trim() != ".")){
1262             
// cktien = double.Parse(textBox2Tien.Text.Replace(",", ""));
1263             
//}else{
1264             
// cktien = 0;
1265             
//}
1266
1267             
//tongtienthanhtoan = tienHang - cktien + thueGTGT;
1268             
//lblTongTienThanhToan.Text = string.Format("{0:#,#}", tongtienthanhtoan);
1269             
this.KetQuaTinhTien();
1270         }
1271
1272         
/*
1273         
private double ThueGiaTriGiaTang()
1274         {
1275             thueGTGT =
0;
1276             tienHang = TongThanhTienHang();
1277
1278             thueGTGT = tienHang *
double.Parse(cmbThueGTGT.SelectedItem.ToString()) / 100;
1279
1280             
return thueGTGT;
1281         }
1282
1283          * */

1284         
//-http://stackoverflow.com/questions/26618839/text-changed-event-of-textbox-object-how-to-perform-text-change-another-actio
1285         
/*
1286         
private void txtChietKhau_TextChanged(object sender, EventArgs e)
1287         {
1288             
try {
1289                 //ckphantram =
0;
1290                 //cktien =
0;
1291                 
string value = txtChietKhau.Text.Replace(",", "");
1292                 
ulong ul;
1293
1294                 
if (ulong.TryParse(value, out ul))
1295                 {
1296                     txtChietKhau.TextChanged -= txtChietKhau_TextChanged;
1297                     txtChietKhau.Text =
string.Format("{0:#,#}", ul);
1298                     txtChietKhau.SelectionStart = txtChietKhau.Text.Length;
1299                     txtChietKhau.TextChanged += txtChietKhau_TextChanged;
1300                 }
1301
1302                 
this.KetQuaTinhTien();
1303                 /*
1304                 
if (!string.IsNullOrEmpty(value) && value != ".")
1305                 {
1306                     ckphantram =
double.Parse(value.Replace(",", ""));
1307                 }
1308                 
this.textBox2Tien.TextChanged -= textBox2Tien_TextChanged;
1309                 cktien = tienHang * ckphantram /
100;
1310                 
this.textBox2Tien.Text = string.Format("{0:#,#}", cktien);
1311                 
this.textBox2Tien.TextChanged += textBox2Tien_TextChanged;
1312
1313                 tienHang = TongThanhTienHang();
1314                 thueGTGT = ThueGiaTriGiaTang();
1315                 tongtienthanhtoan = tienHang - cktien + thueGTGT;
1316                 lblTongTienThanhToan.Text =
string.Format("{0:#,#}", tongtienthanhtoan);
1317                  ****
1318             }
1319             
catch
1320             {
1321
1322             }
1323         }
1324          */

1325         
/*
1326         
private void textBox2Tien_TextChanged(object sender, EventArgs e)
1327         {
1328             
try
1329             {
1330
1331                 ckphantram =
0;
1332                 cktien =
0;
1333                 
string value = textBox2Tien.Text.Replace(",", "");
1334                 
ulong ul;
1335
1336                 
if (ulong.TryParse(value, out ul))
1337                 {
1338                     textBox2Tien.TextChanged -= textBox2Tien_TextChanged;
1339                     textBox2Tien.Text =
string.Format("{0:#,#}", ul);
1340                     textBox2Tien.SelectionStart = textBox2Tien.Text.Length;
1341                     textBox2Tien.TextChanged += textBox2Tien_TextChanged;
1342                 }
1343
1344                 /*
1345                 
if (!string.IsNullOrEmpty(value) && value != ".")
1346                 {
1347                     cktien =
double.Parse(value.Replace(",", ""));
1348                 }
1349                 
if (cktien != 0)
1350                 {
1351                     ckphantram = tienHang / cktien;
1352                 }
1353                 
else
1354                 {
1355                     ckphantram =
0;
1356                 }
1357                 
this.textBox1PhanTram.TextChanged -= textBox1PhanTram_TextChanged;
1358                 
this.textBox1PhanTram.Text = string.Format("{0:#,#}", ckphantram);
1359                 
this.textBox1PhanTram.TextChanged += textBox1PhanTram_TextChanged;
1360
1361                 tienHang = TongThanhTienHang();
1362                 thueGTGT = ThueGiaTriGiaTang();
1363
1364                 tongtienthanhtoan = tienHang - cktien + thueGTGT;
1365                 lblTongTienThanhToan.Text =
string.Format("{0:#,#}", tongtienthanhtoan);
1366                  *
1367             }
1368             
catch
1369             {
1370
1371             }
1372         }
1373 */

1374         
/*
1375         
private void txtChietKhau_KeyPress(object sender, KeyPressEventArgs e)
1376         {
1377
1378             
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
1379             {
1380                 e.Handled =
true;
1381             }
1382
1383             // only allow one
decimal point
1384             
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
1385             {
1386                 e.Handled =
true;
1387             }
1388         }
1389          */

1390
1391             
/*
1392         
private void textBox2Tien_KeyPress(object sender, KeyPressEventArgs e)
1393         {
1394             
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
1395             {
1396                 e.Handled =
true;
1397             }
1398
1399             // only allow one
decimal point
1400             
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
1401             {
1402                 e.Handled =
true;
1403             }
1404         }
1405              */

1406
1407
1408         
private void KetQuaTinhTien()
1409         {
1410             tienHang = TongTienHang();
1411             
//string ck = txtChietKhau.Text.Replace(",", "");
1412             
1413             
//if (!string.IsNullOrEmpty(ck) && ck != ".")
1414             
//{
1415                 
//chietKhau = tienHang * (double.Parse(ck) / 100);
1416             
//}
1417             
//else
1418             
//{
1419                 
//chietKhau = 0;
1420             
//}
1421
1422             
//string thue = "0";
1423
1424             
//if (string.IsNullOrEmpty(cmbThueGTGT.SelectedItem.ToString()))
1425            
// {
1426                 
//thue = cmbThueGTGT.SelectedItem.ToString();
1427             
//}
1428             
1429             
1430
1431             
1432
1433             
//thueGTGT = tienHang * (double.Parse(thue) / 100);
1434             tongtienthanhtoan = tienHang + thueGTGT - chietKhau;
1435
1436             
//lblTienHang.Text = string.Format("{0:#,#}", tienHang);
1437             textBoxTienHang.Text = CauHinhHeThong.Format_SoDeHienThi(tienHang,
true);
1438             
//lblChietKhau.Text = string.Format("{0:#,#}", chietKhau);
1439
1440             
//lblThueGTGT.Text = string.Format("{0:#,#}", thueGTGT);
1441             textBoxTongThanhToan.Text = CauHinhHeThong.Format_SoDeHienThi(tongtienthanhtoan,
true);// string.Format("{0:#,#}", tongtienthanhtoan);
1442         }
1443
1444         
private void cmbThueGTGT_DrawItem(object sender, DrawItemEventArgs e)
1445         {
1446             
1447         }
1448
1449         
/*
1450         
private void btnTheVipKhachHang_Click(object sender, EventArgs e)
1451         {
1452             //Đưa tổng tiền hàng lên form khách hàng
1453             //
this.TongTienHang();
1454            //
double tongtienh = this.TongTienHang();
1455
1456
1457             //Gọi lại form khách hàng tính điểm tích lũy
1458             //frmKhachHang frmKh =
new frmKhachHang(tongtienh, _idKhachHang, lblSoDienThoai.Text);
1459
1460            // frmKh.MyGetData_TTKH =
new frmKhachHang.GetString_ThongTinKhachHang(GetValue_ThongTinKhachHang);
1461
1462             //frmKh.ShowDialog();
1463
1464
1465         }
1466          */

1467
1468         
private void pictureBox1_Click(object sender, EventArgs e)
1469         {
1470
1471         }
1472
1473         
/*
1474         
private void chkSuDungThanhToan_CheckedChanged(object sender, EventArgs e)
1475         {
1476             
1477             
if (chkSuDungThanhToan.Checked == true)
1478             {
1479                 //lấy điểm tích lũy
1480                 
try
1481                 {
1482                     diemTichLuy_str = diemTichLuy_str.Replace(
",", "");
1483
1484                     _diemTichLuy =
double.Parse(diemTichLuy_str) * 10 / 100;
1485
1486                     
double tongtt = tongtienthanhtoan - _diemTichLuy;
1487
1488                     lblTongTienThanhToan.Text =
string.Format("{0:#,#}", tongtt);
1489
1490
1491                 }
1492                 
catch { }
1493             }
1494             
else
1495             {
1496                 lblTongTienThanhToan.Text =
string.Format("{0:#,#}", tongtienthanhtoan);
1497
1498                 _diemTichLuy =
0;
1499
1500             }
1501         }
1502         */

1503         
private void btnThemMoi_Click(object sender, EventArgs e)
1504         {
1505             
// _tenKhachHang = "";
1506              
//_soDienThoai = "";
1507             
//_diaChi = "";
1508             _trangThai =
0;
1509             
//_diemTichLuy = 0;
1510             
//_tongTien = 0;
1511             
//_tienKhach = 0;
1512             
//_tienTraLai = 0;
1513             _ngayMuaHang = DateTime.Now;
1514             
//_ghiChu = "";
1515
1516             lblKh.Text =
"Mua hàng";
1517             _TrangThaiGiaoDich =
"MuaHang";
1518             cmbTTKh.Visible =
false;
1519             cmbTTKh.SelectedValue =
"MuaHang";
1520             tongtienthanhtoan_co_thueCk =
0;
1521
1522             lblThongBao.Visible =
false;
1523
1524             
//_idKhachHang = Controllers.KhachHangCtrl_tbl.InsertKhachHang_tbl(_idKhachHang, _tenKhachHang, _soDienThoai, _diaChi, _trangThai, _diemTichLuy, _tongTien, _tienKhach, _tienTraLai, _ngayMuaHang, _ghiChu, _TrangThaiGiaoDich);
1525             _idKhachHang = Controllers.uctBanHangCtrl.uctBanHang_KhachHang_Insert(_trangThai, _ngayMuaHang, _TrangThaiGiaoDich);
1526             _idKhBack = _idKhachHang;
1527
1528             lblMaDonHang.Text = CauHinhHeThong.TIEU_DE_NGU_HOA_DON_BAN_HANG + _idKhachHang.ToString();
1529             
//lblTienKhach.Text = "0";
1530             textBoxTienKhachDua.Text =
"0";
1531             
//lblTienHang.Text = "0";
1532             textBoxTienHang.Text =
"0";
1533             
//lblTongTienThanhToan.Text = "0";
1534             textBoxTongThanhToan.Text =
"0";
1535             
//lblTraLai.Text = "0";
1536             textBoxTraLaiKhach.Text =
"0";
1537
1538             txtSoLuong.Text =
"";
1539             txtGiaBan.Text =
"";
1540
1541             txtMaSanPham.Enabled =
true;
1542             txtMaSanPham.Focus();
1543             
//txtGiaBan.Enabled = true;
1544             
//txtSoLuong.Enabled = true;
1545
1546             
//btnThemMoi.Enabled = false;
1547             btnLoaiBo.Visible =
false;
1548             
//btnThayDoiGia.Enabled = true;
1549             
//btnThayDoiSoLuong.Enabled = true;
1550             
//chkSuDungThanhToan.Enabled = true;
1551
1552             dgvDanhSachBanHang.Rows.Clear();
1553
1554             btnThanhToan.Enabled =
false;
1555             
//Đưa thông tin khách hàng về khách hàng mới
1556             
//ThongTinKhachHang_Bool(false);
1557
1558         }
1559
1560         
private void txtGiaBan_Click(object sender, EventArgs e)
1561         {
1562             loadlandau =
false;
1563         }
1564
1565         
private void txtGiaBan_MouseCaptureChanged(object sender, EventArgs e)
1566         {
1567             loadlandau =
false;
1568         }
1569
1570         
private void txtSoLuong_Click(object sender, EventArgs e)
1571         {
1572             loadlandau =
false;
1573         }
1574
1575         
private void txtSoLuong_MouseCaptureChanged(object sender, EventArgs e)
1576         {
1577             loadlandau =
false;
1578         }
1579
1580         
private void txtGiaBan_KeyDown(object sender, KeyEventArgs e)
1581         {
1582             
if (e.KeyCode == Keys.Enter)
1583             {
1584                 e.SuppressKeyPress =
true;
1585                 
//dua chuot vao o so luong
1586                 txtSoLuong.Focus();
1587             }
1588         }
1589
1590         
private void txtSoLuong_KeyDown(object sender, KeyEventArgs e)
1591         {
1592             
if (e.KeyCode == Keys.Enter)
1593             {
1594                 e.SuppressKeyPress =
true;
1595
1596                 
//Kiểm tra hàng khuyễn mãi
1597                 
//this.KiemTraHangKhuyenMai();
1598                 
//dua chuot vao o ma san pham
1599                 txtMaSanPham.Focus();
1600             }
1601         }
1602
1603         
private void dgvDanhSachBanHang_CellClick(object sender, DataGridViewCellEventArgs e)
1604         {
1605             
//-https://stackoverflow.com/questions/1132471/how-to-reference-column-name-instead-of-e-columnindex-in-winform-datagridview-ev
1606             
if ( dgvDanhSachBanHang.Columns[e.ColumnIndex].Name == "TenSanPham" && e.RowIndex != -1)
1607             {
1608                 
//-https://stackoverflow.com/questions/12762036/datagridview-cell-click-event
1609                 
if (dgvDanhSachBanHang.CurrentCell != null && dgvDanhSachBanHang.CurrentCell.Value != null)
1610                 {
1611                     
//khong cho update trong textchange
1612                     loadlandau =
true;
1613
1614                     
double giaban = 0;
1615                     
double soluongDaBan = 0;
1616
1617                     giaban = CauHinhHeThong.Format_SoDeTinhToan(dgvDanhSachBanHang.Rows[e.RowIndex].Cells[
"GiaBan"].Value.ToString(),true);
1618                     soluongDaBan = CauHinhHeThong.Format_SoDeTinhToan(dgvDanhSachBanHang.Rows[e.RowIndex].Cells[
"SoLuongDaBan"].Value.ToString(), true);
1619
1620                     txtGiaBan.Text = CauHinhHeThong.Format_SoDeHienThi(giaban,
true);
1621                     txtSoLuong.Text = CauHinhHeThong.Format_SoDeHienThi(soluongDaBan,
false);
1622                     _tenSanPham = dgvDanhSachBanHang.Rows[e.RowIndex].Cells[
"TenSanPham"].Value.ToString();
1623
1624                     _idBanHang = Int32.Parse(dgvDanhSachBanHang.Rows[e.RowIndex].Cells[
"IdBanHang"].Value.ToString());
1625                     _getIdKho = Int32.Parse(dgvDanhSachBanHang.Rows[e.RowIndex].Cells[
"NhapKhoId"].Value.ToString());
1626
1627                     _maSanPham = dgvDanhSachBanHang.Rows[e.RowIndex].Cells[
"MaSanPham"].Value.ToString();
1628
1629                 }
1630
1631             }
1632         }
1633
1634         
private void linkLabelThietLapCk_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
1635         {
1636             frmBanHang_Ck_Thue frmBhCk_Thue =
new frmBanHang_Ck_Thue(_idKhachHang);
1637             frmBhCk_Thue.ShowDialog();
1638
1639             
//Goi lai danh sach san pham
1640             
this.HienThiDanhSachSanPhamTheoKhachHang(_idKhachHang);
1641         }
1642
1643         
private void linkLabelXemChiTiet_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
1644         {
1645             
//frmBanHang_Ck_Thue frmBhCk_Thue = new frmBanHang_Ck_Thue(_idKhachHang);
1646             
//frmBhCk_Thue.ShowDialog();
1647
1648             
//Goi lai danh sach san pham
1649             
//this.HienThiDanhSachSanPhamTheoKhachHang(_idKhachHang);
1650         }
1651
1652         
1653         
private void KiemTraHangKhuyenMai()
1654         {
1655
1656             
/*
1657             //lay danh sach san pham duoc khuyen mai
1658             
float sol = float.Parse( CauHinhHeThong.Format_SoDeTinhToan(txtSoLuong.Text.Trim()).ToString());
1659             //kiem tra san pham co hang khuyen mai hay khong
1660             dtBomItem = Controllers.BomItemCtrl.FillDataSet_BomItem_Get_SpKhuyenMai_Count(
0, 0, _maSanPham, "TrangThai", sol, DateTime.Now).Tables[0];
1661             
if (Int32.Parse( dtBomItem.Rows[0]["SoSanPhamKhuyenMai"].ToString() ) > 0)
1662             {
1663                 frmBanHang_BomVaGoiSp frmBhBomGsp =
new frmBanHang_BomVaGoiSp(0, 0, _maSanPham, "TrangThai", Int32.Parse(CauHinhHeThong.Format_SoDeTinhToan(txtSoLuong.Text.Trim()).ToString()), DateTime.Now, _idKhachHang);
1664                 frmBhBomGsp.ShowDialog();
1665                 //Insert hang khuyễn mãi
1666
1667                 //
select từ bảng bán hàng
1668                 
this.HienThiDanhSachSanPhamTheoKhachHang(_idKhachHang);
1669             }
1670              */

1671             
string IdBomStr = string.Empty;
1672             
string LoaiHangHoa = "MuaHang";
1673             dtBomItem = Controllers.BomItemCtrl.FillDataSet_BomItem_Get_SpKhuyenMai_KiemTra(IdBomStr, LoaiHangHoa, _idKhachHang, _ngayMuaHang).Tables[
0];
1674
1675             
if (dtBomItem.Rows.Count > 0)
1676             {
1677                 
foreach(DataRow item in dtBomItem.Rows)
1678                 {
1679                     IdBomStr += item[
"IdBom"].ToString() + ";";
1680                 }
1681
1682                 frmBanHang_BomVaGoiSp frmBhBomGsp =
new frmBanHang_BomVaGoiSp(IdBomStr, "HangKhuyenMai", "TrangThai", DateTime.Now, _idKhachHang);
1683                 frmBhBomGsp.ShowDialog();
1684
1685                 
this.HienThiDanhSachSanPhamTheoKhachHang(_idKhachHang);
1686             }
1687
1688         }
1689
1690         
private void linkLabel_ThietLap_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
1691         {
1692             cmbTTKh.Visible =
true;
1693         }
1694
1695         
private void cmbTTKh_SelectionChangeCommitted(object sender, EventArgs e)
1696         {
1697
1698             
if (cmbTTKh.SelectedValue.ToString() == "MuaHang")
1699             {
1700                 lblKh.Text =
"Mua hàng";
1701                 _TrangThaiGiaoDich =
"MuaHang";
1702
1703                 cmbTTKh.Visible =
false;
1704             }
1705             
else if (cmbTTKh.SelectedValue.ToString() == "DatHang")
1706             {
1707                 lblKh.Text =
"Đặt hàng";
1708                 _TrangThaiGiaoDich =
"DatHang";
1709
1710             }
1711             
else
1712             {
1713                 lblKh.Text =
"Trả hàng";
1714                 _TrangThaiGiaoDich =
"TraHang";
1715
1716             }
1717
1718             
if (_idKhachHang == 0)
1719             {
1720                 
//Insert vào bảng khách hàng lấy IdKhachHang
1721                 _idKhachHang = Controllers.uctBanHangCtrl.uctBanHang_KhachHang_Insert(_trangThai, _ngayMuaHang, _TrangThaiGiaoDich);
1722                 
//ẩn thông báo
1723                 lblThongBao.Visible =
false;
1724
1725                 lblMaDonHang.Text = CauHinhHeThong.TIEU_DE_NGU_HOA_DON_BAN_HANG + _idKhachHang.ToString();
1726             }
1727
1728
1729
1730         }
1731
1732         
private void KhachHangTruocClick()
1733         {
1734             lblThongBao.Visible =
false;
1735
1736             
if (_getTrangThaiThanhToan == true)
1737             {
1738                 
this.HienThiKhachHangTruoc(_idKhBack, _ngayMuaHang);
1739
1740                 
return;
1741             }
1742
1743             
this.HienThiKhachHangTruoc(_idKhBack, _ngayMuaHang);
1744         }
1745
1746         
private void linkLabel_KhachHangTruoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
1747         {
1748             
this.KhachHangTruocClick();
1749
1750         }
1751
1752         
private void HienThiKhachHangTruoc(int idKhachHang, DateTime ngayMuaHang)
1753         {
1754             dtKhTruoc = Controllers.uctBanHangCtrl.uctBanHang_Gets_KhachHangTruoc(
0, idKhachHang, "MuaHang", ngayMuaHang, 1, _pageIndexKhTruoc).Tables[0];
1755
1756             
if (dtKhTruoc.Rows.Count > 0)
1757             {
1758                 _idKhachHang = Int32.Parse(dtKhTruoc.Rows[
0]["IdKhachHang"].ToString());
1759                 _idKhBack = Int32.Parse(dtKhTruoc.Rows[
0]["BackIdKh"].ToString());
1760                 
1761                 
this.HienThiDanhSachSanPhamTheoKhachHang(_idKhachHang);
1762
1763                 lblMaDonHang.Text = CauHinhHeThong.TIEU_DE_NGU_HOA_DON_BAN_HANG + _idKhachHang.ToString();
1764
1765                 txtMaSanPham.Focus();
1766
1767                 btnThanhToan.Enabled =
true;
1768             }
1769             
else
1770             {
1771                 dgvDanhSachBanHang.Rows.Clear();
1772                 txtSoLuong.Text =
"";
1773                 txtGiaBan.Text =
"";
1774                 lblMaDonHang.Text =
"0";
1775                 textBoxTienHang.Text =
"";
1776                 textBoxTongThanhToan.Text =
"";
1777                 textBoxTienKhachDua.Text =
"";
1778                 textBoxTraLaiKhach.Text =
"";
1779
1780                 _tongSoBanGhiKhTruoc =
0;
1781                 
1782             }
1783         }
1784
1785         
private void linkLabel_ThongTinKH_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
1786         {
1787             
//Đưa tổng tiền hàng lên form khách hàng
1788             
//this.TongTienHang();
1789             
// double tongtienh = this.TongTienHang();
1790
1791
1792             
//Gọi lại form khách hàng tính điểm tích lũy
1793             frmKhachHang frmKh =
new frmKhachHang(0, _idKhachHang, "");
1794
1795             frmKh.MyGetData_TTKH =
new frmKhachHang.GetString_ThongTinKhachHang(GetValue_ThongTinKhachHang);
1796
1797             frmKh.ShowDialog();
1798         }
1799
1800         
private void txtMaDonHang2_KeyDown(object sender, KeyEventArgs e)
1801         {
1802             
if (e.KeyCode == Keys.Enter)
1803             {
1804                 
//Ấn enter không có tiếng kêu
1805                 e.SuppressKeyPress =
true;
1806
1807
1808
1809             }
1810         }
1811
1812         
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
1813         {
1814             CauHinhHeThong.PRINT_WIDTH =
800;
1815             CauHinhHeThong.PRINT_HEIGHT =
750;
1816
1817             
float xWidth = (float)CauHinhHeThong.PRINT_WIDTH;
1818             
float yHeight = (float)CauHinhHeThong.PRINT_HEIGHT;
1819
1820             
//set font, size & style
1821             Font f =
new Font("Arial", 12, FontStyle.Regular);
1822
1823             
//create a bmp / graphic to use MeasureString on
1824             Bitmap bMap =
new Bitmap(2200, 2200);
1825             Graphics gMap = Graphics.FromImage(bMap);
1826
1827             
//measure the string
1828             SizeF sizeOfString =
new SizeF();
1829                         
1830             
//use:
1831             
//Debug.WriteLine("String Height: " + sizeOfString.Height);
1832             
//Debug.WriteLine("String Width: " + sizeOfString.Width);
1833
1834             
float currentY = 50;// declare one variable for height measurement
1835            
// e.Graphics.DrawString("Print in Multiple Pages", DefaultFont, Brushes.Black, 10, currentY);//this will print one heading/title in every page of the document
1836             sizeOfString = gMap.MeasureString(CauHinhHeThong.TEN_CONG_TY,
new Font("Arial", 22, FontStyle.Regular));
1837             e.Graphics.DrawString(CauHinhHeThong.TEN_CONG_TY,
new Font("Arial", 22, FontStyle.Regular), Brushes.Black, xWidth / 2 - (sizeOfString.Width/2), currentY);
1838
1839             currentY += (
10 + sizeOfString.Height);
1840             sizeOfString = gMap.MeasureString(
"ĐC: " + CauHinhHeThong.DIA_CHI, f);
1841             e.Graphics.DrawString(
"ĐC:" + CauHinhHeThong.DIA_CHI, new Font("Arial", 12, FontStyle.Regular), Brushes.Black, xWidth / 2 - (sizeOfString.Width / 2), currentY);
1842
1843             currentY +=
25;
1844             sizeOfString = gMap.MeasureString(
"Hotline: " + CauHinhHeThong.HOTLINE, f);
1845             e.Graphics.DrawString(
"Hotline:" + CauHinhHeThong.HOTLINE, new Font("Arial", 12, FontStyle.Regular), Brushes.Black, xWidth / 2 - (sizeOfString.Width / 2), currentY);
1846
1847
1848             currentY +=
25;
1849             sizeOfString = gMap.MeasureString(
"HÓA ĐƠN THANH TOÁN", new Font("Arial", 14, FontStyle.Regular));
1850             e.Graphics.DrawString(
"HÓA ĐƠN THANH TOÁN", new Font("Arial", 14, FontStyle.Regular), Brushes.Black, xWidth / 2 - (sizeOfString.Width / 2), currentY);
1851
1852             
//tao dong ket ngang
1853             Pen redPen =
new Pen(Color.Red, 1);
1854             
//Graphics.DrawLine(redPen, x1, y1, x2, y2);
1855             currentY +=
35;
1856
1857             
//can le trong page
1858             
float canLe = 35.0F;
1859             e.Graphics.DrawLine(redPen, canLe, currentY, (xWidth - canLe), currentY);
1860
1861             currentY +=
25;
1862             e.Graphics.DrawString(
"Số HĐ: " + " " + lblMaDonHang.Text.Trim(), new Font("Arial", 12, FontStyle.Regular), Brushes.Black, canLe, currentY);
1863
1864             currentY +=
25;
1865             e.Graphics.DrawString(
"Thu ngân: ", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, canLe, currentY);
1866
1867             currentY +=
25;
1868             e.Graphics.DrawString(
"Ngày giờ: " + CauHinhHeThong.Format_HienThiNgayThangNam(DateTime.Now.ToString(), true), new Font("Arial", 12, FontStyle.Regular), Brushes.Black, canLe, currentY);
1869
1870             
//tao bang
1871             Pen penTable =
new Pen(Color.Black, 1);
1872             currentY +=
25;
1873             e.Graphics.DrawLine(penTable, canLe, currentY, (xWidth - canLe), currentY);
1874
1875             
//currentY += 20;
1876
1877             
float cotX = (xWidth /24);
1878             
1879
1880             
// lay chieu cao cau text
1881             sizeOfString = gMap.MeasureString(
"STT", new Font("Arial", 12, FontStyle.Regular));
1882             
float chieuCaoHang = sizeOfString.Height + 3;
1883
1884             currentY +=
5;
1885             e.Graphics.DrawString(
"STT", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, canLe, currentY);
1886             e.Graphics.DrawLine(penTable, canLe, currentY -
5, canLe, currentY + chieuCaoHang);
1887
1888             e.Graphics.DrawString(
"Sản phẩm", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 3), currentY);
1889             e.Graphics.DrawLine(penTable, (canLe + cotX +
10), currentY - 5, (canLe + cotX + 10), currentY + chieuCaoHang);
1890
1891             e.Graphics.DrawString(
"ĐVT", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 10), currentY);
1892             e.Graphics.DrawLine(penTable, (canLe + cotX *
9), currentY - 5, (canLe + cotX * 9), currentY + chieuCaoHang);
1893
1894             e.Graphics.DrawString(
"S.Lượng", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 12 +5), currentY);
1895             e.Graphics.DrawLine(penTable, (canLe + cotX *
12), currentY - 5, (canLe + cotX * 12 ), currentY + chieuCaoHang);
1896
1897
1898             e.Graphics.DrawString(
"Đơn giá", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 15), currentY);
1899             e.Graphics.DrawLine(penTable, (canLe + cotX *
14 + 15), currentY - 5, (canLe + cotX * 14 +15), currentY + chieuCaoHang);
1900
1901
1902             e.Graphics.DrawString(
"Thành tiền", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 19), currentY);
1903             e.Graphics.DrawLine(penTable, (canLe + cotX *
18), currentY - 5, (canLe + cotX * 18), currentY + chieuCaoHang);
1904             e.Graphics.DrawLine(penTable, xWidth - canLe, currentY -
5, xWidth - canLe, currentY + chieuCaoHang);
1905
1906
1907             
//chan can le
1908             currentY +=
22;
1909             e.Graphics.DrawLine(penTable, canLe, currentY , (xWidth - canLe), currentY);
1910
1911             
string tSanPham = "";
1912             
string[] arrText;
1913             
string txtSpChuoi = "";
1914
1915             
float pTongT = 0;
1916
1917             DataTable dtPrint =
new DataTable();
1918             
int idKhPrint = 0;
1919             idKhPrint = Int32.Parse(lblMaDonHang.Text.Replace(CauHinhHeThong.TIEU_DE_NGU_HOA_DON_BAN_HANG,
""));
1920             dtPrint = Controllers.BanHangCtrl.FillDataSet_getBanHangByKhachHangId(
"", idKhPrint).Tables[0];
1921             
if (dtPrint.Rows.Count > 0)
1922             {
1923                 
int dem = 0;
1924                 
float sluongDb = 0;
1925                 
float gBan = 0;
1926                 
float pThue = 0;
1927                 
float pCkhau = 0;
1928                 
float pThanhTien = 0;
1929                 
foreach (DataRow item in dtPrint.Rows)
1930                 {
1931                     dem +=
1;
1932                     currentY +=
5;
1933                     tSanPham = item[
"TenSanPham"].ToString();
1934
1935                     sizeOfString = gMap.MeasureString(tSanPham,
new Font("Arial", 12, FontStyle.Regular));
1936                     
if (sizeOfString.Width > (cotX * 8))
1937                     {
1938                         
//tSanPham = "Sản abc 124/lit phẩm sadf abc 12 21";
1939
1940                         arrText = tSanPham.Split(
' ');
1941
1942                         txtSpChuoi =
"";
1943                         
for (int t = 0; t < arrText.Length; t++)
1944                         {
1945                             
if (t % 5 == 0 && t != 0)
1946                             {
1947                                 txtSpChuoi += arrText[t] +
"\r\n";
1948                             }
1949                             
else
1950                             {
1951                                 txtSpChuoi += arrText[t] +
" ";
1952                             }
1953                         }
1954                         tSanPham = txtSpChuoi;
1955                         sizeOfString = gMap.MeasureString(tSanPham,
new Font("Arial", 12, FontStyle.Regular));
1956
1957                     }
1958                     chieuCaoHang = sizeOfString.Height +
3;
1959
1960                     
//stt
1961                     e.Graphics.DrawString(dem.ToString(),
new Font("Arial", 12, FontStyle.Regular), Brushes.Black, canLe + 10, currentY);
1962                     e.Graphics.DrawLine(penTable, canLe, currentY -
5, canLe, currentY + chieuCaoHang);
1963
1964                     e.Graphics.DrawString(tSanPham,
new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX + 15), currentY);
1965                     e.Graphics.DrawLine(penTable, (canLe + cotX +
10), currentY - 5, (canLe + cotX + 10), currentY + chieuCaoHang);
1966
1967
1968                     e.Graphics.DrawString(item[
"TenDonViTinh"].ToString(), new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 10), currentY);
1969                     e.Graphics.DrawLine(penTable, (canLe + cotX *
9), currentY - 5, (canLe + cotX * 9), currentY + chieuCaoHang);
1970
1971                     sluongDb =(
float)CauHinhHeThong.Format_SoDeTinhToan(item["SoLuongDaBan"].ToString(), false);
1972                     gBan = (
float)CauHinhHeThong.Format_SoDeTinhToan(item["GiaBan"].ToString(), false);
1973
1974                     pThue = (
float)CauHinhHeThong.Format_SoDeTinhToan(item["Thue"].ToString(), false);
1975                     pCkhau = (
float)CauHinhHeThong.Format_SoDeTinhToan(item["ChietKhauPhanTram"].ToString(), false);
1976
1977                     pThanhTien =(
float)CauHinhHeThong.BanHang_ThanhTien(gBan, sluongDb, pThue, pCkhau);
1978
1979                     pTongT += pThanhTien;
1980
1981                     e.Graphics.DrawString(CauHinhHeThong.Format_SoDeHienThi(sluongDb,
false), new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 12 + 5), currentY);
1982                     e.Graphics.DrawLine(penTable, (canLe + cotX *
12), currentY - 5, (canLe + cotX * 12), currentY + chieuCaoHang);
1983
1984
1985                     e.Graphics.DrawString(CauHinhHeThong.Format_SoDeHienThi(gBan - (gBan * pCkhau /
100) + (gBan * pThue / 100), true), new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 15), currentY);
1986                     e.Graphics.DrawLine(penTable, (canLe + cotX *
14 + 15), currentY - 5, (canLe + cotX * 14 + 15), currentY + chieuCaoHang);
1987
1988
1989                     e.Graphics.DrawString(CauHinhHeThong.Format_SoDeHienThi(pThanhTien,
true), new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 19), currentY);
1990                     e.Graphics.DrawLine(penTable, (canLe + cotX *
18), currentY - 5, (canLe + cotX * 18), currentY + chieuCaoHang);
1991                     e.Graphics.DrawLine(penTable, xWidth - canLe, currentY -
5, xWidth - canLe, currentY + chieuCaoHang);
1992
1993
1994                     
//dong ke
1995                     currentY += chieuCaoHang;
1996                     e.Graphics.DrawLine(penTable, canLe, currentY, (xWidth - canLe), currentY);
1997                 }
1998
1999             }
2000             
else
2001             {
2002                 pTongT =
0;
2003             }
2004
2005             currentY +=
50;
2006             e.Graphics.DrawLine(penTable, canLe, currentY, (xWidth - canLe), currentY);
2007
2008             currentY +=
7;
2009             
//thanh tien
2010             e.Graphics.DrawString(
"Tiền thanh toán", new Font("Arial", 14, FontStyle.Regular), Brushes.Black, canLe, currentY);
2011             e.Graphics.DrawString(CauHinhHeThong.Format_SoDeHienThi(pTongT,
true), new Font("Arial", 14, FontStyle.Regular), Brushes.Black, (canLe + cotX * 19), currentY);
2012
2013             currentY +=
35;
2014             
//tien khach
2015             e.Graphics.DrawString(
"Tiền khách", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, canLe, currentY);
2016             e.Graphics.DrawString(textBoxTienKhachDua.Text,
new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 19), currentY);
2017
2018             currentY +=
35;
2019             
//tra lai
2020             e.Graphics.DrawString(
"Tiền trả lại", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, canLe, currentY);
2021             e.Graphics.DrawString(textBoxTraLaiKhach.Text,
new Font("Arial", 12, FontStyle.Regular), Brushes.Black, (canLe + cotX * 19), currentY);
2022
2023
2024             
//kẻ hết
2025             currentY +=
30;
2026             e.Graphics.DrawLine(penTable, canLe, currentY, (xWidth - canLe), currentY);
2027             currentY +=
20;
2028             sizeOfString = gMap.MeasureString(
"Hân hạnh phục vụ Quý khách", f);
2029             e.Graphics.DrawString(
"Hân hạnh phục vụ Quý khách", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, xWidth / 2 - (sizeOfString.Width / 2), currentY);
2030
2031             currentY +=
20;
2032             sizeOfString = gMap.MeasureString(
"Cảm ơn & Hẹn gặp lại!", f);
2033             e.Graphics.DrawString(
"Cảm ơn & Hẹn gặp lại!", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, xWidth / 2 - (sizeOfString.Width / 2), currentY);
2034
2035
2036             
/*
2037             
while (totalnumber <= 50) // check the number of items
2038             {
2039                 //e.Graphics.DrawString(totalnumber.ToString(),
new Font("Arial", 12, FontStyle.Regular), Brushes.Black, 220, currentY);//print each item
2040                 
2041
2042                 currentY +=
25; // set a gap between every item
2043                 totalnumber +=
1; //increment count by 1
2044                 
if (itemperpage < 20) // check whether the number of item(per page) is more than 20 or not
2045                 {
2046                     itemperpage +=
1; // increment itemperpage by 1
2047                     e.HasMorePages =
false; // set the HasMorePages property to false , so that no other page will not be added
2048
2049                 }
2050                 
else // if the number of item(per page) is more than 20 then add one page
2051                 {
2052                     itemperpage =
0; //initiate itemperpage to 0 .
2053                     e.HasMorePages =
true; //e.HasMorePages raised the PrintPage event once per page .
2054                     
return;//It will call PrintPage event again
2055
2056                 }
2057             }
2058              */

2059         }
2060
2061         
private void button1_Click(object sender, EventArgs e)
2062         {

2063            ///
here we are printing 50 numbers sequentially by using loop.
2064            
//For each button click event we have to reset below two variables to 0
2065            
// because every time PrintPage event fires automatically.
2066             
/*
2067            itemperpage = totalnumber =
0;
2068            printPreviewDialog1.Document = printDocument1;
2069
2070            ((ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[
1]).Items[0]).Enabled
2071            =
false;//disable the direct print from printpreview.as when we click that Print button PrintPage event fires again.
2072
2073            
2074            printDocument1.DefaultPageSettings.PaperSize = paperSize;
2075            printPreviewDialog1.PrintPreviewControl.Zoom =
1;
2076            printPreviewDialog1.ShowDialog();
2077              */

2078             
this.ThucHienLenhIn();
2079         }
2080
2081         
private void ThucHienLenhIn()
2082         {
2083             itemperpage = totalnumber =
0;
2084             printPreviewDialog1.Document = printDocument1;
2085
2086             ((ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[
1]).Items[0]).Enabled = false;//disable the direct print from printpreview.as when we click that Print button PrintPage event fires again.
2087
2088
2089             printDocument1.DefaultPageSettings.PaperSize = paperSize;
2090             printPreviewDialog1.PrintPreviewControl.Zoom =
1;
2091             printPreviewDialog1.ShowDialog();
2092         }
2093
2094         
private void button2_Click(object sender, EventArgs e)
2095         {
2096             itemperpage = totalnumber =
0;
2097             printDialog1.Document = printDocument1;
2098             printDocument1.DefaultPageSettings.PaperSize = paperSize;
2099             printDialog1.ShowDialog();
2100         }
2101
2102         
private void linkLabelValidateKey_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
2103         {
2104             frmConnectCSDL frmCsdl =
new frmConnectCSDL("KeyPm");
2105             frmCsdl.ShowDialog();
2106         }
2107
2108         
2109
2110         
//private void linkLabel_DsSanPhamDaBan_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
2111         
//{
2112
2113         
//}
2114
2115         
/*
2116         
private void linkLabel_TimDonHang_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
2117         {
2118             txtTimDonHang.Visible =
true;
2119
2120             
if (!string.IsNullOrEmpty(txtTimDonHang.Text.Trim()))
2121             {
2122                 
int idKhTk = (int)CauHinhHeThong.Format_SoDeTinhToan(txtTimDonHang.Text.Trim(),true);
2123                 HienThiDanhSachSanPhamTheoKhachHang(idKhTk);
2124             }
2125         }
2126
2127         
private void txtTimDonHang_KeyDown(object sender, KeyEventArgs e)
2128         {
2129             
if (e.KeyCode == Keys.Enter)
2130             {
2131                 //Ấn enter không có tiếng kêu
2132                 e.SuppressKeyPress =
true;
2133
2134                 
int idKhTk = (int)CauHinhHeThong.Format_SoDeTinhToan(txtTimDonHang.Text.Trim(), true);
2135                 HienThiDanhSachSanPhamTheoKhachHang(idKhTk);
2136
2137             }
2138         }
2139          */

2140
2141        
2142
2143
2144
2145     }
2146 }


Gõ tìm kiếm nhanh...